package com.bill.common.news.dao;

import com.bill.common.news.dto.NewsQueryDTO;
import com.bill.common.news.entity.News;
import com.sinba.common.dao.BaseDAOImplHibernate;
import com.sinba.common.dto.PageDTO;

import freemarker.template.utility.StringUtil;

import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.util.StringUtils;

public class NewsDAO
    extends BaseDAOImplHibernate<News>
    implements INewsDAO
{
    public PageDTO findNewsPager( NewsQueryDTO qdto, String sord, String sidx )
    {
        final DetachedCriteria dc = DetachedCriteria.forClass( News.class );

        if ( qdto != null )
        {
            //标题 
            if ( StringUtils.hasText( qdto.getTitle(  ) ) )
            {
                dc.add( Restrictions.like( "title",
                                           qdto.getTitle(  ),
                                           MatchMode.ANYWHERE ) );
            }

            //内容
            if ( StringUtils.hasText( qdto.getContent(  ) ) )
            {
                dc.add( Restrictions.like( "content",
                                           qdto.getContent(  ),
                                           MatchMode.ANYWHERE ) );
            }

            //关键�?
            if ( StringUtils.hasText( qdto.getKeyword(  ) ) )
            {
                dc.add( Restrictions.like( "keyword",
                                           qdto.getKeyword(  ),
                                           MatchMode.ANYWHERE ) );
            }

            if ( StringUtils.hasText( qdto.getPermissions(  ) ) )
            {
                dc.add( Restrictions.like( "permissions",
                                           qdto.getPermissions(  ),
                                           MatchMode.ANYWHERE ) );
            }

            if ( StringUtils.hasText( qdto.getReleaseUser(  ) ) )
            {
                dc.add( Restrictions.like( "releaseUser",
                                           qdto.getReleaseUser(  ),
                                           MatchMode.ANYWHERE ) );
            }

//        	dc.createAlias("category", "ct");
//        	if(qdto.getCategoryId()!=null && qdto.getCategoryId()>0){
//        		dc.add(Restrictions.eq("ct.categoryId", qdto.getCategoryId()));
//        	}
//        	if(StringUtils.hasText(qdto.getCategoryCode())){
//        		dc.add(Restrictions.eq("ct.categoryCode", qdto.getCategoryCode()));
//        	}
            if ( StringUtils.hasText( qdto.getNewType(  ) ) )
            {
                dc.add( Restrictions.eq( "newType",
                                         qdto.getNewType(  ) ) );
            }
        }

        //����
        if ( ( sord != null ) && ! sord.equals( "" ) && ( sidx != null ) && ! sidx.equals( "" ) )
        {
            if ( sord.equals( "desc" ) )
            {
                dc.addOrder( Order.desc( sidx ) );
            } else{
                dc.addOrder( Order.asc( sidx ) );
            }
        }

        return super.findPageByCriteria( dc,
                                         qdto.getStart(  ),
                                         qdto.getLimit(  ) );
    }
}
